<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
        let a = new Proxy({},{
        i:0,
        get(target,key,value){
            return ()=> this.i++
        }
    })
                           // 这里出现了一次
    console.log(a==0&&a==1&&a==2)       // true  一样只要出现a一次就直接触发


    // 
    let cc = {name:'ss',age:11,sex:'男'}
    let c = new Proxy(cc,{
        i:1,
        get(target,key){
            console.log(target)
            console.log(key)
            return ()=>this.i                   //this指的是当前这个对象，target指的才是cc,也就是第一个参数
            // return 'ss'                 //return 出去一个函数  返回值就赋值给了c
        },
        set(target,key,value) {
            if(key=="sex") {
                throw '不可改'
            } else {
                target['age']=value
                target[key]=value                   //就是有了它才 添加了个新的 d属性；
            }
        }
    })
    c.d=12
    // c.sex='nv'
    console.log(c==1)
    console.log(cc)
// 对比一下啊
    // var book = { _value:2019,edit:2,value:''}
    //     Object.defineProperty(book,'value', {
    //         get(){
    //             return this._value              //返回什么，，value就是什么 不反悔，value就是undefined
    //         },
    //         set(n){
    //             this.edit=n             // 给谁赋值，就直接改变谁。。
    //             this._value=n

    //         }
    //     })
    //   book.value = 2020
    //   console.log(book)
</script>
</body>
</html>